
package com.itheima.health.dao;

import com.github.pagehelper.Page;
import com.itheima.health.pojo.Permission;
import com.itheima.health.pojo.Role;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @Author likepei
 * @Date 2020/2/19 10:48
 * @Version v1.0
 * @Description 角色持久层接口
 */
public interface RoleDao {
    /**
     * 基于用户id 查询关联的角色集合
     *
     * @param id
     * @return
     */
    Set<Role> findByUserId(@Param("id") Integer id);

    /**
     * 基于查询条件, 查询套餐信息
     *
     * @param queryString
     * @return
     */
    Page<Role> findAll(@Param("queryString") String queryString);

    /*     保存角色*/
    void add(Permission permission);

    /*//调用dao方法, 把角色ID与勾选的权限Id 存入中间表( t_rolet_role_permission)*/
    void addpermissionAndrole(Map<String, Integer> map);

    /*通过检查项ID, 去中间表中查询,  检查组是否用到了该检查项*/
    Long countRoleById(@Param("id") Integer id);

    /*当前的检查项没有被引用, 可以删除*/
    void deleteById(@Param("id") Integer id);

    /* 基于角色id 查询角色对象*/
    Role findById(@Param("id") Integer id);

    /**
     * 基于角色Id 查询关联的权限项id
     */
    List<Integer> roleIdByPermissionId(@Param("id") Integer id);

    /*更新角色信息*/
    void edit(Role role);

    /*删除角色旧的依赖关系( 角色与勾选的权限的关系 [从中间表删除数据] )*/
    void deleteRoleIdAndpermission(Integer id);

    /*将新的角色id和新的权限的id保存到中间表中*/
    void addRoleIdAndpermission(Map<String, Integer> map);
}
